Method and system for multicast delivery of multimedia content on demand

ABSTRACT

A server in connection with a plurality of multimedia sources that has a plurality of clients. The server determines if at least one of the clients is requesting to receive at least one of the sources. The server then multicasts these requested sources to the requesting clients, respectively. If none of the clients is requesting a particular source, the server does not multicast that particular source. If all of the clients cease requesting a particular source that the server is currently multicasting, the server terminates the multicast of that particular source.

CROSS-REFERENCE TO RELATED PATENT APPLICATIONS

This Application claims priority to Provisional U.S. Patent ApplicationSer. No. 60/715,552, filed Sep. 9, 2005, to Jonathan Hilton Cooper ofRode Island, the contents of which is incorporated herein in itsentirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to the transmission ofmultimedia content on a computer network and more particularly to amultimedia content delivery system and method that maximizes theefficiency of network bandwidth consumption through selectivemulticasting of the multimedia.

2. Background of the Invention

Multicasting is a communication pattern in which a source host sends amessage to a group of destination hosts. Although this can be done bysending unicast (point-to-point) messages to each of the destinationhosts, the added consumption of bandwidth and processing power requiredto establish connections to the destination hosts make unicastingundesirable in this situation. Accordingly, the primary advantage ofusing multicasting is the decrease in bandwidth consumption. There aremany applications which are required to transmit packets to hundreds ofdestination hosts. The packets sent to these destination hosts share agroup of links on their paths to their destinations. Since multicastingrequires the transmission of only a single packet by the source host andreplicates this packet only as necessary (i.e. at forks of the multicastdelivery tree), multicast transmission can conserve scarce networkresources.

Another important feature of multicasting, and with which the presentapplication is concerned, is its support for “datacasting” applications.In recent years, multimedia transmission over the internet has becomeincreasingly popular. These transmissions are also referred to as“webcasts”, “audiocasts”, “videocasts”, “podcasts” and other fancifulterms depending on the type of the multimedia content. Most popular isthe capture, compression and transmission of audio and video signalsfrom a server to a group of receiving clients. Instead of using a set ofpoint-to-point connections between the participating clients,multicasting can be used to efficiently distribute the multimediacontent to all of the clients. Frequently, clients may join or leave anaudiocast or a videocast at any time. The flexibility in joining andleaving a group provided by multicasting can make the management of thevariable membership much easier to handle. However, current systems thatmulticast or broadcast multimedia content, broadcast all of the contentall of the time regardless of whether clients are requesting the contentor not. In this respect, datacasts are comparable to a radio stations ora television stations, which broadcast radio or television signals,respectively, regardless if anybody is listening or watching. On theinternet, however, this type of broadcasting-in-the-blind can lead toinefficient use of scarce network resources at best and to severenetwork congestion at worst. Therefore, there is a need for a multimediasystem that can selectively multicast its streaming content based onclient usage or requests.

SUMMARY OF THE INVENTION

The present invention solves the problem of the prior art by providing anovel streaming multimedia broadcasting system and method thatselectively multicasts its content based on client requests and usage.In particular, the present system includes a server in communicationwith a plurality of sources and has a plurality of clients. The serverdetermines if at least one of the clients is requesting to receive atleast one of the sources. The server then multicasts these requestedsources to the requesting clients, respectively. If none of the clientsis requesting a particular source, the server does not multicast thatparticular source. If all of the clients cease requesting a particularsource that the server is currently multicasting, the server terminatesthe multicast of that particular source. By selectively multicastingthose sources that are available, significant network resources can beconserved and network congestion can be avoided.

In some embodiments of the present invention, there is amethod/device/system for executing a method for delivering, over anetwork, streaming media content from at least one source to a pluralityof clients, the method comprising the actions of multicasting a firststreaming content to at least one client of the plurality of clients,and terminating the multicast of the first streaming content upon adetermination that none of the plurality of clients desires to continueto receive the first streaming content. In some embodiments, there is amethod/system/apparatus as described above/below, where thedetermination is made at an application layer of a network protocol,although in other embodiments, determinations are not made at anapplication layer, and in some embodiments, termination of themulticast/prevention of the multicast is includes stopping/preventingthe streaming media content from entering/propagating through thenetwork.

Some embodiments discussed above and below further include the actionof, before multicasting the first streaming content, determining if atleast one client of the plurality of clients desires to receivestreaming content from the at least one source. In some embodiments,there is a method/system/apparatus as described above/below, where theaction of determining if at least one client of the plurality of clientsdesires to receive streaming content from the at least one sourcecomprises evaluating received polling messages from one or more clientsof the plurality of clients indicative of a desire by one or moreclients to continue to receive streaming content from the at least onesource.

In some embodiments, there is a method/system/apparatus as describedabove/below, where the action of determining if at least one client ofthe plurality of clients desires to receive streaming content from theat least one source comprises evaluating received polling messages fromone or more clients of the plurality of clients indicative of a desireby one or more clients to continue to receive streaming content from theat least one source, on the basis of at least one of the number ofrecently received polling messages; and whether at least one pollingmessage has recently been received. In some embodiments, there is amethod/system/apparatus as described above/below, the action ofdetermining if at least one client of the plurality of clients desiresto receive streaming content from the at least one source comprisessending polling messages to one or more clients of the plurality ofclients requesting confirmation from respective recipients that therespective recipients of the polling questions desire to continue toreceive streaming content from the at least one source.

In some embodiments, there is a method/system/apparatus as describedabove/below, the action of determining if at least one client of theplurality of clients desires to receive streaming content from the atleast one source comprises ending polling messages to one or moreclients of the plurality of clients requesting confirmation fromrespective recipients that the respective recipients of the pollingquestions desire to continue to receive streaming content from the atleast one source; and t least one of evaluating responses fromrespective recipients of the polling questions; and evaluating a lack ofresponses from respective recipients of the polling questions.

In some embodiments, there is a method/system/apparatus as describedabove/below, where, before terminating the streaming content,determining if at least one client of the plurality of clients desiresto receive streaming content from the at least one source, andterminating the multicast if it is determined at an application layer ofa network protocol that no client desires to receive streaming contentfrom the at least one source.

In some embodiments, there is a method/system/apparatus as describedabove/below, further comprising the action of, after multicasting afirst streaming content to at least one client of the plurality ofclients, and prior to terminating the multicast of the first streamingcontent if none of the plurality of clients desires to continue toreceive the at least one source, recognizing that at least one otherclient desires to receive the first streaming content and adding the atleast one other client to a multicast address of a multicasttransmission constituting the multicasting of the first streamingcontent.

In some embodiments, there is a method/system/apparatus as describedabove/below, where the action of determining if at least one client ofthe plurality of clients desires to receive streaming content from theat least one source comprises at least one of counting a number of openTCP socket connections (physical or otherwise) to a server multicastingthe first streaming content to at least one client of the plurality ofclients; and determining whether there is an open TCP socket connectionto a server multicasting the first streaming content to at least oneclient of the plurality of clients based on the number of open TCPsocket connections counted.

In some embodiments, there is a method/system/apparatus as describedabove/below, where the action of determining if at least one client ofthe plurality of clients desires to receive streaming content from theat least one source comprises at least one of: counting a number of openTCP socket connections to a server multicasting the first streamingcontent to at least one client of the plurality of clients, anddetennining that no client desires to receive streaming content from theat least one source if the number of open TCP socket connections isbelow a certain number; and determining whether there is an open TCPsocket connection to a server multicasting the first streaming contentto at least one client of the plurality of clients, and determining thatno client desires to receive streaming content from the at least onesource if it is determined that there are no open TCP socketconnections. In some embodiments, there is a method/system/apparatus asdescribed above/below, where action of terminating the multicast of thefirst streaming content upon a determination that none of the pluralityof clients desires to continue to receive the at least one source occurswhile the streaming content is still being generated and sent to theserver. In some embodiments, there is a method/system/apparatus asdescribed above/below, where wherein the first streaming contentincludes video content generated by a video camera system. In someembodiments, there is a method/system/apparatus as describedabove/below, further comprising: multicasting the first streamingcontent to at least one client of the plurality of clients utilizing aserver in communication with the at least one source, wherein the atleast one source transmits the first streaming content to the server,wherein the multicasting occurs through at least one of: one or morewireless access points, one or more digital subscriber lines, one ormore wide area network connections, and one or more local area networkconnections, wherein the first content includes at least one of text,pictures, video and audio content. In some embodiments, there is amethod/system/apparatus as described above/below, where the firststreaming content includes video content generated by a first videocamera system, the method further comprising the actions of multicastingat least a second streaming content to at least one client of theplurality of clients, the second streaming content including videocontent generated by a second video camera system; and terminating themulticast of the second streaming content when a determination is madethat none of the plurality of clients desires to continue to receive thesecond streaming content, wherein the actions of multicasting occurringthrough a same server.

In some embodiments, there is a method/system/apparatus as describedabove/below, for delivering streaming media content from at least onesource to a plurality of clients, comprising the actions of: receivingwith a server a first streaming content from the at least one source;and at least one of: determining whether at least one client of theplurality of clients desires to receive streaming content from the atleast one source before multicasting the first streaming content fromthe server so that one or more of the plurality of clients may receivethe first streaming content; determining whether at least one client ofthe plurality of clients desires to receive streaming content from theat least one source before multicasting the first streaming content fromthe server so that one or more of the plurality of clients may receivethe first streaming content, wherein if it is determined that the atleast one client of the plurality of clients desires to receivestreaming content from the at least one source, multicasting the firststreaming content so that at least one of the plurality of clients mayreceive the first streaming content, and wherein if it is determinedthat no client desires to receive streaming content from the at leastone source, preventing the multicasting of the first streaming content;determining whether at least one client of the plurality of clients whohas previously received the streaming content from the at least onesource multicasted from the server desires to continue to receivestreaming content from the at least one source to determine whether todiscontinue multicasting the first streaming content from the server;and determining whether at least one client of the plurality of clientswho has previously received the streaming content from the at least onesource multicasted from the at least one server desires to continue toreceive streaming content from the at least one source multicasted fromthe server to whether to discontinue multicasting the first streamingcontent from the at least one server, wherein if it is determined thatthe at least one client of the plurality of clients who has previouslyreceived the streaming content from the at least one source desires tonot continue to receive streaming content from the at least one source,terminating multicasting of the first streaming content, and wherein ifit is determined that the at least one client of the plurality ofclients who has previously received the streaming content from the atleast one source desires to continue to receive streaming content fromthe at least one source, continuing multicasting the first streamingcontent.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features, aspects, and advantages of the presentinvention will become better understood with reference to the followingdescription, appended claim, and accompanying drawing where:

FIG. 1 is a schematic view of a computer network of the preferredembodiment of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring to FIG. 1, an example of a network system is shown where thereare five (5) clients and three (3) cameras (or sources) in communicationwith a server through various network connections. Although thefollowing description will refer to video captured through cameras as amatter of convenience, it is to be understood that the present inventioncan accommodate all types streaming content, including withoutlimitation such formats as text, pictures, and audio. Moreover, in someembodiments, various types of networks and/or connections to the serversmay be utilized. Moreover, the number of clients and sources may alsovary. Accordingly, in some embodiments, the clients and sources mayconnect to the server through any number of ways including, by way ofexample only and without limitation, wireless access points, digitalsubscriber lines, wide area network connections and/or local areanetwork connections.

FIG. 1 depicts an example of a system where there are 5 clients and 3video sources. In a typical multicast IP video system, all 3 cameraswould be broadcasting to all parts of the network all of the time.Accordingly, if each camera was transmitting 1 Mbps of data, thenBroadcast Domain A and Broadcast Domain B would each be handling 3 Mbpsof data and 3 Mbps would be going to each Network Interface Card (NIC)on each client. If there were 300 cameras, the number would be 300 Mbpsand this could start to cause network congestion.

In a system implementing some embodiments of the present invention, thevideo server may not send any video until one of the clients requestedit. That way, the server would start multicasting once it received arequest from a single client for a particular resource. If it received asubsequent request, it would continue streaming just that resource. Whena client no longer needed the stream, the server would take note of thatand once no client needed the stream, it would stop streaming.

The server of some embodiments of the present invention, which mayinclude a processor which may include logic to implement some or all ofthe embodiments described herein, may receive a constant stream of videofrom the cameras communicating with it. However, the server does notmulticast all of these video feeds all of the time, as in the prior art.Instead, it checks to see whether any of the clients are requesting toview any of the video from any of the particular cameras. If none of theclients is requesting the video from a particular camera, the serverdoes not multicast that cameras' content. If however, at least oneclient desires to view the video from a particular camera, the servermulticasts that camera's video stream to the client. If subsequent otherclients desire to receive the video feed of that camera, the servermerely takes note that there is an additional client and the client isadded to the multicast address of the multicast transmission. It can beappreciated that in some implementations, this conserves significantnetwork resources because only a single transmission is being made ofany particular camera's video. If, however, all of the clients ceaserequesting a particular video feed, as may happen from time to time, theserver may terminate the multicast of that video, thereby furtherconserving network resources. Referring back to the imperfect radio andtelevision analogy made earlier, it can be appreciated that the presentsystem ceases to datacast the content that nobody is listening orwatching.

“By terminating the multicast,” etc., it is meant the prevention of theplacement of streaming media content onto a network if no client desiresto receive the content and the suspension of propagation of thestreaming media content through the network if no client desires tocontinue receiving the content. That is, in some embodiments of thepresent invention, content being sent to a server by, for example, avideo camera, is not placed onto the network (and thus not multicasted),if no client desires the content. In this regard, in some embodiments,there is a video distribution system, comprising, a server and aplurality of cameras adapted to send respective streaming video contentsto the server. The server is adapted to receive at least some of thesent streaming video contents and adapted to multicast at least some ofthe received streaming media content to a plurality of clients over anetwork. Further, in this system, the total bit rate of the streamingvideo contents capable of being received by the server exceeds a networkbandwidth, and the server is adapted to limit the number of multicastsof respective streaming media contents to a total bit rate that does notexceed the network bandwidth by determining whether at least one of thereceived streaming video contents is desired to be viewed by a clientand not placing that at least one received streaming video onto thenetwork if the at least one client does not desire to view the receivedstreaming video. In such embodiments, 50, 60, 70, 80, 90, 100, 300 ormore cameras may be in communication with the server, and the negativeeffects of a saturated network may be avoided, even though the inputinto the server exceeds the bandwidth of the network. For example, inthe case of UDP traffic, there will be no latency or slowdown in thevideo, and in the case of TCP traffic, there will be no data transfershutdowns, etc., because only certain contents from certain cameras willbe put on the network because only those contents are requested/or asufficient number of contents that are not desired are removed from thenetwork so as to bring the total bit rate to below the maximumbandwidth. Thus, in some embodiments, the present invention provides fora system that permits management of what is propagated through thenetwork based on client desires.

In some embodiments of the invention, not placing the content onto thenetwork alleviates the need to utilize network switches/networkswitching to gain efficiencies in utilizing the bandwidth.

Although methods of tracking the number of requests for a particularvideo feed are numerous, an example would be to count the number of openTCP socket connections to the server for a particular camera. When aclient requests a particular video feed from the server, a connection isestablished, typically by opening its own TCP socket to the server. Whenthe client desires to cease viewing a video feed, this same TCP socketis closed. In such a regime, the number of clients viewing a particularcamera video feed always corresponds to the number of open TCP socketsat the server. By counting the number of open TCP sockets, the servercan readily determine whether to continue to multicast a particularcamera video feed or to terminate that multicast. Although counting openTCP sockets is one method of determining the number of clientsinterested in the particular content of a camera, any communicationprotocol that establishes a connection to the server, such as HTTP,etc., may be used as an indicator.

Alternatively, the client may send a regular polling message to theserver to indicate that it was still interested in receiving the contentof the camera. The server could then keep track of the number ofrecently received polling messages to determine whether to continue themulticast of the video. Alternatively, or in addition to this, theclient may send a message indicating it was interested in the video feedof a particular camera, and then periodically the server could send apolling message to the viewing clients to ensure that they are stillinterested in receiving the content. By keeping track of the responsesfrom the clients, the server may determine to continue to datacast thevideo feed. In some embodiments of the present invention, adetermination is made whether at least one client of the plurality ofclients desires to receive streaming content from the at least onesource. This determination may include evaluating received pollingmessages from one or more clients of the plurality of clients indicativeof a desire by one or more clients to continue to receive streamingcontent from the at least one source, on the basis of at least one ofthe number of recently received polling messages, and whether at leastone polling message has recently been received. In this regard, if apolling message has not been received within a predetermined or variabletime identified by a system administrator, etc., a determination may bemade that no client desires to receive streaming video. In someembodiments, this determination includes sending polling messages to oneor more clients requesting confirmation from respective recipients thatthe respective recipients of the polling questions desire to continue toreceive streaming content from the at least one source. This may furtherinclude evaluating responses from respective recipients of the pollingquestions and/or evaluating a lack of responses from respectiverecipients of the polling questions, wherein if the responses areindicative of a negative desire to receive content, and/or if noresponses are received, a determination may be made that no clientdesires to receive this content.

Therefore, it can be seen that some embodiments of the present inventionprovide a unique solution to the problems of the prior art by providinga system that may selectively multicast its streaming multimedia contentbased on client usage and/or requests.

Some embodiments of the present invention may be implemented withprogramming/logic/software/controls, etc., at the so-called applicationlayer of a network protocol. In some embodiments, the application layerallows a user to access information on the network through anapplication. This layer may be the main interface for the user(s) tointeract with the application and therefore the network. Some examplesof application layer protocols include, by way of example only, and notby way of limmitation, Telnet, File Transfer Protocol (FTP), Simple MailTransfer Protocol (SMTP) and Hypertext Transfer Protocol (HTTP). In someembodiments, the network protocol may include some or all of the sevenlayers of the open system interconnection (OSI) model, the applicationlayer being analogous to the seventh layer of that model. That is, in anetwork having the OSI model with seven layers, the programming, logic,software and/or controls, implementing some embodiments of the presentinvention will be at the seventh layer, or its equivalent.

In an exemplary embodiment of the present invention, there is a methodfor delivering, over a network, streaming media content from at leastone source to a plurality of clients. This method may comprise theactions of multicasting a first streaming content to at least one clientof the plurality of clients, and terminating the multicast of the firststreaming content upon a determination made at an application layer of anetwork protocol (which may be done, for example, with logic at theapplication layer) that none of the plurality of clients desires tocontinue to receive the first streaming content.

The present invention includes methods for practicing the invention,software to practice the invention, logic (including hardware, softwareand/or firmware) to practice the invention, and apparatuses configuredto implement the present invention. Accordingly, the present inventionincludes a program product and hardware and firmware for implementingalgorithms to practice the present invention, as well as the systems andmethods described herein, and also for the control of the devices andimplementation of the methods described herein.

It is noted that the term “processor,” as used herein, encompasses bothsimple circuits and complex circuits, as well as computer processors.

It is further noted that the teachings of the present invention may becombined with the teachings of one or both of U.S. patent applicationSer. No. 09/912,869 entitled Methods and Systems for Networked CameraControl, to Peter Mottur and Ethan Zimmer, filed Jul. 25, 2001, and U.S.patent application Ser. No. 10/301,344 entitled Methods and Systems toControl Access to Network Devices, to Peter Mottur, filed Nov. 21, 2002,the contents of these applications being incorporated by referenceherein in their entirety. This is especially the case with respect tothe teachings relating to the camera networks and ancillary componentsdiscussed therein.

In some embodiments of the present invention, there is amethod/system/apparatus as described above/below, comprising the actionsof receiving with a server a first streaming content from the at leastone source; placing the first streaming content onto the network andmulticasting the first streaming content; and while receiving with theserver the first streaming content from the at least one source,determining whether all of the plurality of clients have ceased todesire to receive the multicasted first streaming content from the atleast one source, and if a determination is made that all of theplurality of clients have ceased to desire to receive the multicastedfirst streaming content from the at least one source, preventing thefirst streaming content from continuing to enter the network, and if adetermination is made that at least one of the plurality of clientscontinues to desire to receive the multicasted first streaming contentfrom the at least one source, continue multicasting of the firststreaming content and continue placing the first streaming content ontothe network. In some embodiments, there is a method/system/apparatus asdescribed above/below, comprising the actions of: determining if atleast one client of the plurality of clients desires to receive at leastone source of the plurality of sources; multicasting the at least onesource to the at least one client; and terminating the multicast of theat least one source if none of the plurality of clients desires tocontinue to receive content from the at least one source.

In some embodiments, there is a method/system/apparatus as describedabove/below, where a server is adapted to receive a first streamingmedia content from a first source and adapted to multicast the receivedfirst streaming media content to at least one client of the plurality ofclients, wherein the server includes logic, which, in some embodiments,is at an application layer of a network protocol, to determine whetherany of the plurality of clients desires to at least one of: receive amulticast transmission of the first streaming media content; andcontinue receiving a multicast transmission of the first streaming mediacontent, and wherein the server includes logic, in some embodiments atthe application layer of the network protocol, to at least one of: notinitiate multicasting of the first streaming media content if it isdetermined that no client desires to receive the multicast transmissionof the first streaming media content; and terminate multicasting of thefirst streaming media content if it is determined that no client desiresto continue receiving the multicast transmission of the first streamingmedia content. In some embodiments, there is a method/system/apparatusas described above/below, wherein the server includes logic to evaluate,in some embodiments at the application layer of the network protocol,received polling messages from one or more clients of the plurality ofclients indicative of a desire by one or more clients to at least one ofreceive and continue to receive streaming content from the at least onesource, and determine whether to, based on the evaluation, at least oneof: not initiate multicasting of the first streaming media content if itis determined that no client desires to receive the multicasttransmission of the first streaming media content; and terminatemulticasting of the first streaming media content if it is determinedthat no client desires to continue receiving the multicast transmissionof the first streaming media content. In some embodiments, there is amethod/system/apparatus as described above/below, wherein the server isadapted to send polling messages to one or more clients of the pluralityof clients requesting confirmation that respective recipients of thepolling questions desire to at least one of receive and continue toreceive streaming content from the at least one source, wherein theserver includes logic at the application layer of the network protocolto at least one of analyze received responses to the polling messagesand evaluate a lack of received responses to the polling messages inorder to at least one of make a determination as to whether at least oneclient of the plurality of clients desires to at least one of receivestreaming content and continue to receive streaming content from the atleast one source. In some embodiments, there is amethod/system/apparatus as described above/below, where there is aserver adapted to receive a first streaming media content from a firstsource and adapted to multicast the received first streaming mediacontent to at least one client of the plurality of clients, wherein theserver includes logic to determine whether any of the plurality ofclients desires to at least one of: receive a multicast transmission ofthe first streaming media content; and continue receiving a multicasttransmission of the first streaming media content, and wherein theserver includes logic to at least one of prevent the first streamingmedia content from being placed on the network and prevent the firststreaming media content from continuing to be placed on the network ifat least one of: it is determined that no client desires to receive themulticast transmission of the first streaming media content; and it isdetermined that no client desires to continue receiving the multicasttransmission of the first streaming media content.

In some embodiments, there is a method/system/apparatus as describedabove/below, where the server includes logic to evaluate receivedpolling messages from one or more clients of the plurality of clientsindicative of a desire by one or more clients to at least one of receiveand continue to receive streaming content from the at least one source,and determine whether to, based on the evaluation, at least one ofprevent the first streaming media content from being placed on thenetwork and prevent the first streaming media content from continuing tobe placed on the network if at least one of: it is determined that noclient desires to receive the multicast transmission of the firststreaming media content; and if it is determined that no client desiresto continue receiving the multicast transmission of the first streamingmedia content. In some embodiments, there is a method/system/apparatusas described above/below, where the server is adapted to send pollingmessages to one or more clients of the plurality of clients requestingconfirmation that respective recipients of the polling questions desireto at least one of receive and continue to receive streaming contentfrom the at least one source, wherein the server includes logic to atleast one of analyze received responses to the polling messages andevaluate a lack of received responses to the polling messages in orderto at least one of make a determination as to whether at least oneclient of the plurality of clients desires to at least one of receivestreaming content and continue to receive streaming content from the atleast one source.

In some embodiments, there is a program product, comprising: a programproduct for delivering streaming media content from at least one sourceto a plurality of clients comprising machine-readable program code forcausing, when executed, a machine to perform some or all of the variousactions, methods, etc., described above and/or below. In someembodiments, the machine is a server system, and in some embodiments,the program product is adapted for utilization at the application layerof a network protocol.

In some embodiments, there a program product for delivering streamingmedia content from at least one source to a plurality of clientscomprising machine-readable program code for causing, when executed, amachine to perform some or all of the various methods/actions, etc.,described above and/or below. In some embodiments, there is amethod/system/apparatus as described above/below, for distributing aplurality of streaming video contents over a network without exceedingnetwork bandwidth capacity due to the total bit rate of the plurality ofstreaming video contents, the method comprising the actions of:executing some or all of the various actions/methods, etc., describedabove/below, where the first streaming content is a first streamingvideo content, if the total bit rate of the plurality of streaming videocontents approaches the network bandwidth capacity.

In some embodiments, there is a method/system/apparatus as describedabove/below, including preventing a new client from receiving the firststreaming content if the total bit rate of the plurality of streamingvideo contents would exceed the network bandwidth capacity. In someembodiments, there is a method/system/apparatus as describedabove/below, including providing a message to the new clientannunciating denial of receipt of the first streaming content uponpreventing the new client from receiving the first streaming content. Insome embodiments, there is a method/system/apparatus as describedabove/below, for distributing a plurality of streaming video contentsover a network without exceeding network bandwidth capacity due to thetotal bit rate of the plurality of streaming video contents, the methodcomprising the actions of: executing some or all of the variousactions/methods described above and/or below, where the first streamingcontent is a first streaming video content, if the total bit rate of theplurality of streaming video contents approaches the network bandwidthcapacity.

In some embodiments, there is a method/system/apparatus as describedabove/below, further comprising multicasting at least a second streamingcontent to at least one client of the plurality of clients, the secondstreaming content including video content generated by a second videocamera system; and continuing the multicast of the second streamingcontent after a determination is made, in some embodiments at theapplication layer of the network protocol, that at least one of theplurality of clients desires to continue to receive the second streamingcontent, wherein, in some embodiments, the actions of multicastingoccurring through a same server. In some embodiments, there is amethod/system/apparatus as described above/below, there is a videodistribution system, comprising a server; and a plurality of camerasadapted to send respective streaming video contents to the server,wherein the server is adapted to receive at least some of the sentstreaming video contents and adapted to multicast at least some of thereceived streaming media content to a plurality of clients over anetwork, wherein the total bit rate of the streaming video contentscapable of being received by the server exceeds a network bandwidth, andwherein the server is adapted to limit the number of multicasts ofrespective streaming media contents to a total bit rate that does notexceed the network bandwidth by determining whether at least one of thereceived streaming video contents is desired to be viewed by a clientand not placing that at least one received streaming video onto thenetwork if the at least one client does not desire to view the receivedstreaming video.

Given the disclosure of the present invention, one versed in the artwould appreciate that there may be other embodiments and modificationswithin the scope and spirit of the present invention. Accordingly, allmodifications attainable by one versed in the art from the presentdisclosure within the scope and spirit of the present invention are tobe included as further embodiments of the present invention. The scopeof the present invention accordingly is to be defined as set forth inthe appended claims.

1. A method for delivering, over a network, streaming media content fromat least one source to a plurality of clients, the method comprising theactions of: multicasting a first streaming content to at least oneclient of the plurality of clients; and terminating the multicast of thefirst streaming content upon a determination made at an applicationlayer of a network protocol that none of the plurality of clientsdesires to continue to receive the first streaming content.
 2. Themethod of claim 1, further comprising the action of, before multicastingthe first streaming content, determining if at least one client of theplurality of clients desires to receive streaming content from the atleast one source.
 3. The method of claim 2, wherein the action ofdetermining if at least one client of the plurality of clients desiresto receive streaming content from the at least one source comprisesevaluating received polling messages from one or more clients of theplurality of clients indicative of a desire by one or more clients tocontinue to receive streaming content from the at least one source. 4.The method of claim 2, wherein the action of determining if at least oneclient of the plurality of clients desires to receive streaming contentfrom the at least one source comprises evaluating, at the applicationlayer of the network protocol, received polling messages from one ormore clients of the plurality of clients indicative of a desire by oneor more clients to continue to receive streaming content from the atleast one source, on the basis of at least one of: the number ofrecently received polling messages; and whether at least one pollingmessage has recently been received.
 5. The method of claim 2, whereinthe action of determining if at least one client of the plurality ofclients desires to receive streaming content from the at least onesource comprises sending polling messages to one or more clients of theplurality of clients requesting confirmation from respective recipientsthat the respective recipients of the polling questions desire tocontinue to receive streaming content from the at least one source. 6.The method of claim 2, wherein the action of determining if at least oneclient of the plurality of clients desires to receive streaming contentfrom the at least one source comprises: sending polling messages to oneor more clients of the plurality of clients requesting confirmation fromrespective recipients that the respective recipients of the pollingquestions desire to continue to receive streaming content from the atleast one source; and at least one of: evaluating responses fromrespective recipients of the polling questions; and evaluating a lack ofresponses from respective recipients of the polling questions.
 7. Themethod of claim 1, further comprising the action of, before terminatingthe streaming content, determining at the application layer of thenetwork protocol if at least one client of the plurality of clientsdesires to receive streaming content from the at least one source, andterminating the multicast if it is determined at the application layerof the network protocol that no client desires to receive streamingcontent from the at least one source.
 8. The method of claim 1, furthercomprising the action of, after multicasting a first streaming contentto at least one client of the plurality of clients, and prior toterminating the multicast of the first streaming content if none of theplurality of clients desires to continue to receive the at least onesource, recognizing at the application layer of the network protocolthat at least one other client desires to receive the first streamingcontent and adding the at least one other client to a multicast addressof a multicast transmission constituting the multicasting of the firststreaming content.
 9. The method of claim 2, wherein the action ofdetermining if at least one client of the plurality of clients desiresto receive streaming content from the at least one source comprises atleast one of: counting a number of open TCP socket connections to aserver multicasting the first streaming content to at least one clientof the plurality of clients; and determining whether there is an openTCP socket connection to a server multicasting the first streamingcontent to at least one client of the plurality of clients based on thenumber of open TCP socket connections counted.
 10. The method of claim2, wherein the action of determining if at least one client of theplurality of clients desires to receive streaming content from the atleast one source comprises at least one of: counting a number of openTCP socket connections to a server multicasting the first streamingcontent to at least one client of the plurality of clients, anddetermining that no client desires to receive streaming content from theat least one source if the number of open TCP socket connections isbelow a certain number; and determining whether there is an open TCPsocket connection to a server multicasting the first streaming contentto at least one client of the plurality of clients, and determining thatno client desires to receive streaming content from the at least onesource if it is determined that there are no open TCP socketconnections.
 11. The method of claim 1, wherein the action ofterminating the multicast of the first streaming content upon adetermination that none of the plurality of clients desires to continueto receive the at least one source occurs while the streaming content isstill being generated and sent to the server.
 12. The method of claim 1,wherein the first streaming content includes video content generated bya video camera system.
 13. The method of claim 1, further comprising:multicasting the first streaming content to at least one client of theplurality of clients utilizing a server in communication with the atleast one source, wherein the at least one source transmits the firststreaming content to the server, wherein the multicasting occurs throughat least one of: one or more wireless access points, one or more digitalsubscriber lines, one or more wide area network connections, and one ormore local area network connections, wherein the first content includesat least one of text, pictures, video and audio content.
 14. The methodof claim 1, wherein the first streaming content includes video contentgenerated by a first video camera system, the method further comprisingthe actions of: multicasting at least a second streaming content to atleast one client of the plurality of clients, the second streamingcontent including video content generated by a second video camerasystem; and terminating the multicast of the second streaming contentwhen a determination is made at the application layer of the networkprotocol that none of the plurality of clients desires to continue toreceive the second streaming content, wherein the actions ofmulticasting occurring through a same server.
 15. A method fordelivering streaming media content from at least one source to aplurality of clients, comprising the actions of: receiving with a servera first streaming content from the at least one source; and at least oneof: determining at an application layer of a network protocol whether atleast one client of the plurality of clients desires to receivestreaming content from the at least one source before multicasting thefirst streaming content from the server so that one or more of theplurality of clients may receive the first streaming content;determining at an application layer of a network protocol whether atleast one client of the plurality of clients desires to receivestreaming content from the at least one source before multicasting thefirst streaming content from the server so that one or more of theplurality of clients may receive the first streaming content, wherein ifit is determined that the at least one client of the plurality ofclients desires to receive streaming content from the at least onesource, multicasting the first streaming content so that at least one ofthe plurality of clients may receive the first streaming content, andwherein if it is determined that no client desires to receive streamingcontent from the at least one source, preventing the multicasting of thefirst streaming content; determining at an application layer of anetwork protocol whether at least one client of the plurality of clientswho has previously received the streaming content from the at least onesource multicasted from the server desires to continue to receivestreaming content from the at least one source to determine at theapplication layer of a network protocol whether to discontinuemulticasting the first streaming content from the server; anddetermining at an application layer of a network protocol whether atleast one client of the plurality of clients who has previously receivedthe streaming content from the at least one source multicasted from theat least one server desires to continue to receive streaming contentfrom the at least one source multicasted from the server to determine atthe application layer of a network protocol whether to discontinuemulticasting the first streaming content from the at least one server,wherein if it is determined that the at least one client of theplurality of clients who has previously received the streaming contentfrom the at least one source desires to not continue to receivestreaming content from the at least one source, terminating multicastingof the first streaming content, and wherein if it is determined at theapplication layer of a network protocol that the at least one client ofthe plurality of clients who has previously received the streamingcontent from the at least one source desires to continue to receivestreaming content from the at least one source, continuing multicastingthe first streaming content.
 16. A method for delivering streaming mediacontent over a network including a server from at least one source to aplurality of clients, comprising the actions of: receiving with a servera first streaming content from the at least one source; placing thefirst streaming content onto the network and multicasting the firststreaming content; and while receiving with the server the firststreaming content from the at least one source, determining whether allof the plurality of clients have ceased to desire to receive themulticasted first streaming content from the at least one source, and ifa determination is made that all of the plurality of clients have ceasedto desire to receive the multicasted first streaming content from the atleast one source, preventing the first streaming content from continuingto enter the network, and if a determination is made that at least oneof the plurality of clients continues to desire to receive themulticasted first streaming content from the at least one source,continue multicasting of the first streaming content and continueplacing the first streaming content onto the network.
 17. A method fordelivering streaming multimedia content from a plurality of sources to aplurality of clients, comprising the actions of: determining if at leastone client of the plurality of clients desires to receive at least onesource of the plurality of sources; multicasting the at least one sourceto the at least one client; and terminating the multicast of the atleast one source if none of the plurality of clients desires to continueto receive content from the at least one source.
 18. An apparatus fordelivering streaming media content from at least one source to aplurality of clients over a network, the apparatus comprising: a serveradapted to receive a first streaming media content from a first sourceand adapted to multicast the received first streaming media content toat least one client of the plurality of clients, wherein the serverincludes logic at an application layer of a network protocol todetermine whether any of the plurality of clients desires to at leastone of: receive a multicast transmission of the first streaming mediacontent; and continue receiving a multicast transmission of the firststreaming media content, and wherein the server includes logic at theapplication layer of the network protocol to at least one of: notinitiate multicasting of the first streaming media content if it isdetermined that no client desires to receive the multicast transmissionof the first streaming media content; and terminate multicasting of thefirst streaming media content if it is determined that no client desiresto continue receiving the multicast transmission of the first streamingmedia content.
 19. The apparatus of claim 18, wherein the serverincludes logic to evaluate, at the application layer of the networkprotocol, received polling messages from one or more clients of theplurality of clients indicative of a desire by one or more clients to atleast one of receive and continue to receive streaming content from theat least one source, and determine whether to, based on the evaluation,at least one of: not initiate multicasting of the first streaming mediacontent if it is determined that no client desires to receive themulticast transmission of the first streaming media content; andterminate multicasting of the first streaming media content if it isdetermined that no client desires to continue receiving the multicasttransmission of the first streaming media content.
 20. The apparatus ofclaim 18, wherein the server is adapted to send polling messages to oneor more clients of the plurality of clients requesting confirmation thatrespective recipients of the polling questions desire to at least one ofreceive and continue to receive streaming content from the at least onesource, wherein the server includes logic at the application layer ofthe network protocol to at least one of analyze received responses tothe polling messages and evaluate a lack of received responses to thepolling messages in order to at least one of make a determination as towhether at least one client of the plurality of clients desires to atleast one of receive streaming content and continue to receive streamingcontent from the at least one source.
 21. An apparatus for deliveringstreaming media content from at least one source to a plurality ofclients over a network, the apparatus comprising: a server adapted toreceive a first streaming media content from a first source and adaptedto multicast the received first streaming media content to at least oneclient of the plurality of clients, wherein the server includes logic todetermine whether any of the plurality of clients desires to at leastone of: receive a multicast transmission of the first streaming mediacontent; and continue receiving a multicast transmission of the firststreaming media content, and wherein the server includes logic to atleast one of prevent the first streaming media content from being placedon the network and prevent the first streaming media content fromcontinuing to be placed on the network if at least one of: it isdetermined that no client desires to receive the multicast transmissionof the first streaming media content; and it is determined that noclient desires to continue receiving the multicast transmission of thefirst streaming media content.
 22. The apparatus of claim 21, whereinthe server includes logic to evaluate received polling messages from oneor more clients of the plurality of clients indicative of a desire byone or more clients to at least one of receive and continue to receivestreaming content from the at least one source, and determine whetherto, based on the evaluation, at least one of prevent the first streamingmedia content from being placed on the network and prevent the firststreaming media content from continuing to be placed on the network ifat least one of: it is determined that no client desires to receive themulticast transmission of the first streaming media content; and if itis determined that no client desires to continue receiving the multicasttransmission of the first streaming media content.
 23. The apparatus ofclaim 21, wherein the server is adapted to send polling messages to oneor more clients of the plurality of clients requesting confirmation thatrespective recipients of the polling questions desire to at least one ofreceive and continue to receive streaming content from the at least onesource, wherein the server includes logic to at least one of analyzereceived responses to the polling messages and evaluate a lack ofreceived responses to the polling messages in order to at least one ofmake a determination as to whether at least one client of the pluralityof clients desires to at least one of receive streaming content andcontinue to receive streaming content from the at least one source. 24.A program product, comprising: a program product for deliveringstreaming media content from at least one source to a plurality ofclients comprising machine-readable program code for causing, whenexecuted, a machine to perform the method of claim 1, wherein themachine is a server system and wherein the program product is adaptedfor utilization at the application layer of a network protocol.
 25. Aprogram product, comprising: a program product for delivering streamingmedia content from at least one source to a plurality of clientscomprising machine-readable program code for causing, when executed, amachine to perform the method of claim 16, wherein the machine is aserver system.
 26. A method of distributing a plurality of streamingvideo contents over a network without exceeding network bandwidthcapacity due to the total bit rate of the plurality of streaming videocontents, the method comprising the actions of: executing the actions ofclaim 1, where the first streaming content is a first streaming videocontent, if the total bit rate of the plurality of streaming videocontents approaches the network bandwidth capacity.
 27. The method ofclaim 26, further comprising: preventing a new client from receiving thefirst streaming content if the total bit rate of the plurality ofstreaming video contents would exceed the network bandwidth capacity.28. The method of claim 27, further comprising: providing a message tothe new client annunciating denial of receipt of the first streamingcontent upon preventing the new client from receiving the firststreaming content.
 29. A method of distributing a plurality of streamingvideo contents over a network without exceeding network bandwidthcapacity due to the total bit rate of the plurality of streaming videocontents, the method comprising the actions of: executing the actions ofclaim 16, where the first streaming content is a first streaming videocontent, if the total bit rate of the plurality of streaming videocontents approaches the network bandwidth capacity.
 30. The method ofclaim 1, further comprising multicasting at least a second streamingcontent to at least one client of the plurality of clients, the secondstreaming content including video content generated by a second videocamera system; and continuing the multicast of the second streamingcontent after a determination is made at the application layer of thenetwork protocol that at least one of the plurality of clients desiresto continue to receive the second streaming content, wherein the actionsof multicasting occurring through a same server.
 31. A videodistribution system, comprising: a server; and a plurality of camerasadapted to send respective streaming video contents to the server,wherein the server is adapted to receive at least some of the sentstreaming video contents and adapted to multicast at least some of thereceived streaming media content to a plurality of clients over anetwork, wherein the total bit rate of the streaming video contentscapable of being received by the server exceeds a network bandwidth, andwherein the server is adapted to limit the number of multicasts ofrespective streaming media contents to a total bit rate that does notexceed the network bandwidth by determining whether at least one of thereceived streaming video contents is desired to be viewed by a clientand not placing that at least one received streaming video onto thenetwork if the at least one client does not desire to view the receivedstreaming video.